% fname: routing_oddeven__sel_bufferlevel__topology_8x8__.m
% ./noxim -routing oddeven -sel bufferlevel -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 8 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_bufferlevel__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.007        20.0178      0.0553984            159           3545          28364
            0.007        22.3309      0.0567969            228           3636          29080
            0.007        23.0387      0.0569004            233           3644          29133
            0.007        24.8064      0.0574395            332           3678          29409
            0.007        21.8842      0.0564609            267           3617          28908
            0.007        22.8204      0.0558145            249           3570          28577
            0.007        23.7405      0.0547578            294           3503          28036
            0.007        21.8184      0.0562422            199           3601          28796
            0.007        22.9461      0.0559648            255           3582          28654
            0.007        22.3619       0.055375            279           3542          28352
            0.007        26.5032      0.0566191            634           3623          28989
            0.007        26.2033      0.0569375            355           3644          29152
            0.007        23.4522      0.0559004            296           3578          28621
            0.007        24.1151       0.056373            217           3607          28863
            0.007        21.0134      0.0546914            226           3501          28002
            0.007        25.8351      0.0559297            399           3578          28636
            0.007         27.229      0.0567656            417           3633          29064
            0.007        25.7033      0.0563477            317           3603          28850
            0.007        21.3672      0.0564766            200           3614          28916
            0.007        25.2802      0.0578184            335           3704          29603
            0.008        34.7297      0.0639609            530           4092          32748
            0.008        34.3763       0.065623            566           4196          33599
            0.008         29.013      0.0635684            568           4064          32547
            0.008        26.9957      0.0621582            284           3979          31825
            0.008        30.1717      0.0628164            397           4018          32162
            0.008        25.8731      0.0631777            367           4044          32347
            0.008        35.7307      0.0629766           1325           4029          32244
            0.008        27.5301       0.063834            462           4086          32683
            0.008        23.4206       0.062748            277           4018          32127
            0.008        26.2901      0.0639062            300           4092          32720
            0.008        26.2123      0.0643281            324           4116          32936
            0.008        28.7742      0.0627031            488           4012          32104
            0.008        28.2483      0.0629336            351           4027          32222
            0.008        24.6467      0.0630137            279           4036          32263
            0.008        26.5093      0.0631699            303           4043          32343
            0.008        28.1575      0.0646777            390           4134          33115
            0.008        25.8908      0.0639746            318           4095          32755
            0.008        33.0418       0.064957            578           4158          33258
            0.008        30.1022      0.0655547            344           4196          33564
            0.008        35.1473      0.0634238            917           4059          32473
            0.009        36.2049      0.0720684            603           4613          36899
            0.009        32.7211      0.0700508            587           4485          35866
            0.009        35.1827      0.0714121            604           4570          36563
            0.009        40.0316      0.0732187            820           4684          37488
            0.009        49.0507      0.0708535           1615           4534          36277
            0.009        35.9356       0.070584            830           4519          36139
            0.009        58.3912      0.0728613           1765           4662          37305
            0.009        49.2731      0.0733809           1823           4698          37571
            0.009        42.2408      0.0722676           1066           4626          37001
            0.009        38.2369          0.071            613           4547          36352
            0.009        37.3001      0.0697734            604           4465          35724
            0.009        34.1255      0.0711387            489           4551          36423
            0.009        46.0456      0.0715586           1254           4580          36638
            0.009        34.2572      0.0704805            512           4510          36086
            0.009        46.9084      0.0711738            807           4553          36441
            0.009        44.0096      0.0729297            862           4666          37340
            0.009        31.6498      0.0703418            660           4503          36015
            0.009        39.6439      0.0713496            772           4566          36531
            0.009        39.8082      0.0727227            766           4655          37234
            0.009        39.2482      0.0718516            597           4597          36788
             0.01        85.7839      0.0825078           2594           5281          42244
             0.01        56.8593      0.0803789           1444           5146          41154
             0.01        82.8451      0.0807109           2631           5163          41324
             0.01        83.8972      0.0794941           2854           5088          40701
             0.01        86.4169       0.080627           3449           5160          41281
             0.01         67.664      0.0789609           2259           5054          40428
             0.01        67.0573      0.0807754           2229           5168          41357
             0.01        121.947      0.0794375           5056           5082          40672
             0.01        69.0749      0.0790234           1941           5057          40460
             0.01        70.9976      0.0797129           2452           5100          40813
             0.01        60.2271       0.080541           1442           5156          41237
             0.01        76.3996      0.0776816           2123           4972          39773
             0.01        61.9914      0.0795273           1942           5090          40718
             0.01        71.7901      0.0794531           2455           5087          40680
             0.01        86.2027      0.0799297           3580           5116          40924
             0.01        78.8118      0.0803984           2584           5144          41164
             0.01        79.0445      0.0818027           2164           5236          41883
             0.01        71.1322      0.0813984           1759           5212          41676
             0.01        92.8366      0.0800098           4198           5122          40965
             0.01        77.3505      0.0789219           2841           5053          40408
            0.011        93.7195      0.0876035           3588           5607          44853
            0.011        98.6145      0.0859902           5185           5504          44027
            0.011        90.6455      0.0855234           5459           5472          43788
            0.011        102.706      0.0884023           4440           5658          45262
            0.011        117.763      0.0864258           4936           5529          44250
            0.011        97.4935      0.0877598           4220           5615          44933
            0.011        115.953       0.088834           3451           5691          45483
            0.011        102.935      0.0882031           4390           5644          45160
            0.011        96.3176      0.0889863           4670           5695          45561
            0.011        79.9274       0.085666           4355           5482          43861
            0.011        106.517      0.0870215           4994           5572          44555
            0.011        99.3098      0.0872402           5225           5584          44667
            0.011        104.911      0.0872871           2861           5586          44691
            0.011        78.6285      0.0860117           4001           5505          44038
            0.011        66.8226      0.0868086           2621           5557          44446
            0.011        109.757      0.0870137           4850           5569          44551
            0.011        97.6354      0.0879648           3815           5628          45038
            0.011        126.598      0.0888047           4494           5683          45468
            0.011        109.125      0.0872109           5123           5582          44652
            0.011        108.474      0.0885137           4979           5666          45319
            0.012        116.412      0.0946309           4445           6059          48451
            0.012        91.0095      0.0937559           4799           6002          48003
            0.012        112.907      0.0943203           5378           6036          48292
            0.012        103.417      0.0942266           5446           6032          48244
            0.012        106.692      0.0937148           5334           5995          47982
            0.012        114.277      0.0951504           4537           6088          48717
            0.012        91.8116      0.0928223           5194           5940          47525
            0.012        99.5271       0.095502           5962           6111          48897
            0.012        96.4941      0.0942363           5314           6031          48249
            0.012        100.852      0.0936758           4070           5998          47962
            0.012         113.08      0.0958926           5434           6137          49097
            0.012        123.234      0.0950781           6331           6084          48680
            0.012        113.614      0.0961621           5763           6157          49235
            0.012         123.74      0.0945938           5045           6053          48432
            0.012        120.317      0.0944863           4988           6048          48377
            0.012        121.921      0.0918125           5178           5877          47008
            0.012        101.533      0.0920039           5015           5890          47106
            0.012        124.868      0.0936055           5064           5993          47926
            0.012         112.03      0.0951758           5434           6091          48730
            0.012        108.896      0.0943281           5316           6036          48296
            0.013        123.431       0.103311           5784           6614          52895
            0.013        126.304       0.101197           5715           6481          51813
            0.013        106.822       0.100742           7222           6445          51580
            0.013        137.845       0.102271           5362           6551          52363
            0.013         119.65       0.100184           5891           6413          51294
            0.013         123.57       0.100424           4943           6430          51417
            0.013        127.772       0.102598           6141           6566          52530
            0.013        138.047       0.102617           5841           6569          52540
            0.013        186.266       0.102926           5033           6590          52698
            0.013        119.118       0.101346           5661           6486          51889
            0.013        134.392       0.103523           5563           6623          53004
            0.013        135.424        0.10192           4671           6521          52183
            0.013        139.891       0.101344           5458           6485          51888
            0.013        143.039        0.10135           5602           6488          51891
            0.013        125.481       0.102385           5506           6553          52421
            0.013        138.986       0.103641           5518           6630          53064
            0.013        111.869       0.101912           4625           6525          52179
            0.013        129.403       0.103383           4823           6617          52932
            0.013        114.701       0.102201           5247           6541          52327
            0.013        106.904        0.10023           6127           6412          51318
            0.014        206.398       0.110383           4817           7061          56516
            0.014        210.211       0.109037           5524           6980          55827
            0.014        144.631       0.109789           6215           7023          56212
            0.014        183.925       0.109115           4710           6982          55867
            0.014        182.902       0.110832           6477           7092          56746
            0.014        189.461       0.109412           5720           6999          56019
            0.014         152.95       0.108383           7147           6939          55492
            0.014        144.823       0.109963           4897           7038          56301
            0.014        149.672         0.1084           5968           6942          55501
            0.014         179.61       0.107957           4979           6906          55274
            0.014        178.099       0.110238           4979           7053          56442
            0.014        164.426         0.1089           7199           6969          55757
            0.014        183.869       0.108006           5765           6915          55299
            0.014        169.942        0.10892           6484           6968          55767
            0.014        186.396       0.109229           6102           6988          55925
            0.014        202.567       0.108273           6476           6929          55436
            0.014        205.413       0.111629           4828           7142          57154
            0.014        152.624       0.108631           5685           6947          55619
            0.014        204.538       0.109896           5474           7033          56267
            0.014        202.405       0.109604           5805           7018          56117
            0.015        216.714       0.114012           5361           7298          58374
            0.015         223.77       0.114912           4540           7348          58835
            0.015        241.325        0.11491           4918           7351          58834
            0.015        234.706       0.114422           5692           7321          58584
            0.015        183.616       0.115842           5130           7413          59311
            0.015        212.906       0.116387           3808           7451          59590
            0.015        240.724       0.116736           5425           7475          59769
            0.015        243.548       0.114764           5466           7341          58759
            0.015        250.051       0.115113           4987           7366          58938
            0.015        212.817        0.11426           5291           7314          58501
            0.015        251.224       0.116424           5702           7454          59609
            0.015        272.079       0.115256           5073           7375          59011
            0.015        219.204       0.116723           5853           7469          59762
            0.015          262.6       0.116418           6031           7447          59606
            0.015        279.686       0.113484           5444           7261          58104
            0.015        237.464       0.114957           5838           7360          58858
            0.015        279.399       0.115402           4908           7385          59086
            0.015        242.962       0.115314           5803           7378          59041
            0.015        257.566       0.115174           6180           7371          58969
            0.015        232.213        0.11359           5420           7270          58158
            0.016        304.305       0.118348           6090           7569          60594
            0.016        330.377        0.11967           6015           7659          61271
            0.016        313.075       0.118063           6140           7556          60448
            0.016        316.295       0.120975           5288           7741          61939
            0.016        291.587       0.121023           5701           7745          61964
            0.016        274.268       0.119578           6649           7656          61224
            0.016        319.005       0.121691           5245           7792          62306
            0.016        305.662       0.120207           6023           7695          61546
            0.016        343.037       0.120414           7002           7704          61652
            0.016        333.548       0.121676           6701           7788          62298
            0.016        333.516       0.120236           4343           7691          61561
            0.016        325.182       0.119359           6073           7640          61112
            0.016        336.229       0.123424           5201           7897          63193
            0.016        328.726       0.120027           5546           7684          61454
            0.016        309.166       0.119514           6057           7648          61191
            0.016        293.916       0.121711           5565           7789          62316
            0.016        297.269       0.120357           5786           7704          61623
            0.016        334.406       0.120992           5553           7747          61948
            0.016        270.734       0.119074           5542           7619          60966
            0.016        303.152       0.120756           6190           7729          61827
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
